type: object
properties:
  type:
    description: 'the type of the resource'
    type: string
    enum:
      - MeshTrace
  mesh:
    description: 'Mesh is the name of the Kuma mesh this resource belongs to. It may be omitted for cluster-scoped resources.'
    type: string
    default: default
  name:
    description: 'Name of the Kuma resource'
    type: string
  spec:
    description: Spec is the specification of the Kuma MeshTrace resource.
    properties:
      default:
        description: MeshTrace configuration.
        properties:
          backends:
            description: |-
              A one element array of backend definition.
              Envoy allows configuring only 1 backend, so the natural way of
              representing that would be just one object. Unfortunately due to the
              reasons explained in MADR 009-tracing-policy this has to be a one element
              array for now.
            items:
              description: Only one of zipkin, datadog or openTelemetry can be used.
              properties:
                datadog:
                  description: Datadog backend configuration.
                  properties:
                    splitService:
                      default: false
                      description: |-
                        Determines if datadog service name should be split based on traffic
                        direction and destination. For example, with `splitService: true` and a
                        `backend` service that communicates with a couple of databases, you would
                        get service names like `backend_INBOUND`, `backend_OUTBOUND_db1`, and
                        `backend_OUTBOUND_db2` in Datadog.
                      type: boolean
                    url:
                      description: |-
                        Address of Datadog collector, only host and port are allowed (no paths,
                        fragments etc.)
                      type: string
                  required:
                    - url
                  type: object
                openTelemetry:
                  description: OpenTelemetry backend configuration.
                  properties:
                    endpoint:
                      description: Address of OpenTelemetry collector.
                      example: otel-collector:4317
                      minLength: 1
                      type: string
                  required:
                    - endpoint
                  type: object
                type:
                  enum:
                    - Zipkin
                    - Datadog
                    - OpenTelemetry
                  type: string
                zipkin:
                  description: Zipkin backend configuration.
                  properties:
                    apiVersion:
                      default: httpJson
                      description: |-
                        Version of the API.
                        https://github.com/envoyproxy/envoy/blob/v1.22.0/api/envoy/config/trace/v3/zipkin.proto#L66
                      enum:
                        - httpJson
                        - httpProto
                      type: string
                    sharedSpanContext:
                      default: true
                      description: |-
                        Determines whether client and server spans will share the same span
                        context.
                        https://github.com/envoyproxy/envoy/blob/v1.22.0/api/envoy/config/trace/v3/zipkin.proto#L63
                      type: boolean
                    traceId128bit:
                      default: false
                      description: Generate 128bit traces.
                      type: boolean
                    url:
                      description: Address of Zipkin collector.
                      type: string
                  required:
                    - url
                  type: object
              required:
                - type
              type: object
            maxItems: 1
            type: array
          sampling:
            description: |-
              Sampling configuration.
              Sampling is the process by which a decision is made on whether to
              process/export a span or not.
            properties:
              client:
                anyOf:
                  - type: integer
                  - type: string
                default: 100%
                description: |-
                  Target percentage of requests that will be force traced if the
                  'x-client-trace-id' header is set. Mirror of client_sampling in Envoy
                  https://github.com/envoyproxy/envoy/blob/v1.22.0/api/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.proto#L127-L133
                  Either int or decimal represented as string.
                x-kubernetes-int-or-string: true
              overall:
                anyOf:
                  - type: integer
                  - type: string
                default: 100%
                description: |-
                  Target percentage of requests will be traced
                  after all other sampling checks have been applied (client, force tracing,
                  random sampling). This field functions as an upper limit on the total
                  configured sampling rate. For instance, setting client_sampling to 100%
                  but overall_sampling to 1% will result in only 1% of client requests with
                  the appropriate headers to be force traced. Mirror of
                  overall_sampling in Envoy
                  https://github.com/envoyproxy/envoy/blob/v1.22.0/api/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.proto#L142-L150
                  Either int or decimal represented as string.
                x-kubernetes-int-or-string: true
              random:
                anyOf:
                  - type: integer
                  - type: string
                default: 100%
                description: |-
                  Target percentage of requests that will be randomly selected for trace
                  generation, if not requested by the client or not forced.
                  Mirror of random_sampling in Envoy
                  https://github.com/envoyproxy/envoy/blob/v1.22.0/api/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.proto#L135-L140
                  Either int or decimal represented as string.
                x-kubernetes-int-or-string: true
            type: object
          tags:
            description: |-
              Custom tags configuration. You can add custom tags to traces based on
              headers or literal values.
            items:
              description: |-
                Custom tags configuration.
                Only one of literal or header can be used.
              properties:
                header:
                  description: Tag taken from a header.
                  properties:
                    default:
                      description: |-
                        Default value to use if header is missing.
                        If the default is missing and there is no value the tag will not be
                        included.
                      type: string
                    name:
                      description: Name of the header.
                      type: string
                  required:
                    - name
                  type: object
                literal:
                  description: Tag taken from literal value.
                  type: string
                name:
                  description: Name of the tag.
                  type: string
              required:
                - name
              type: object
            type: array
        type: object
      targetRef:
        description: |-
          TargetRef is a reference to the resource the policy takes an effect on.
          The resource could be either a real store object or virtual resource
          defined inplace.
        properties:
          kind:
            description: Kind of the referenced resource
            enum:
              - Mesh
              - MeshSubset
              - MeshGateway
              - MeshService
              - MeshServiceSubset
              - MeshHTTPRoute
            type: string
          mesh:
            description: Mesh is reserved for future use to identify cross mesh resources.
            type: string
          name:
            description: |-
              Name of the referenced resource. Can only be used with kinds: `MeshService`,
              `MeshServiceSubset` and `MeshGatewayRoute`
            type: string
          proxyTypes:
            description: |-
              ProxyTypes specifies the data plane types that are subject to the policy. When not specified,
              all data plane types are targeted by the policy.
            items:
              enum:
                - Sidecar
                - Gateway
              type: string
            minItems: 1
            type: array
          tags:
            additionalProperties:
              type: string
            description: |-
              Tags used to select a subset of proxies by tags. Can only be used with kinds
              `MeshSubset` and `MeshServiceSubset`
            type: object
        type: object
    required:
      - targetRef
    type: object
